Code Coverage হলো একটি টেস্টিং পদ্ধতি, যা কোডের কত অংশ পরীক্ষিত হয়েছে তা পরিমাপ করে। এটি কোডের অংশ চিহ্নিত করতে সহায়ক হয় যা টেস্টিং হয়নি এবং যেখানে আরও টেস্টিং প্রয়োজন। যখন আপনি JasmineJS ব্যবহার করেন, তখন কোড কাভারেজ নিশ্চিত করার জন্য Istanbul নামক একটি টুল ব্যবহার করতে পারেন। Istanbul একটি জনপ্রিয় JavaScript কোড কাভারেজ টুল, যা আপনাকে কোডের কোন অংশগুলো টেস্ট করা হয়েছে এবং কোনগুলো বাদ পড়েছে তা দেখাতে সাহায্য করে।
Code Coverage কেন গুরুত্বপূর্ণ?
- কোডের পরীক্ষিত অংশের সঠিকতা: কোড কাভারেজ টুল আপনাকে কোডের সঠিকভাবে টেস্ট হওয়া অংশের পরিসংখ্যান দেয়, যাতে আপনি জানেন যে আপনার টেস্ট কেসগুলো কতটা কার্যকর।
- ব্লাইন্ড স্পট শনাক্তকরণ: এটি সেই অংশগুলো চিহ্নিত করে যেখানে টেস্টিং হয়নি এবং সেখানে আরও টেস্টিং করা প্রয়োজন।
- টেস্টিং উন্নত করা: কোড কাভারেজ ব্যবহার করে আপনি টেস্টের গুণগত মান বৃদ্ধি করতে পারেন এবং নিশ্চিত করতে পারেন যে সমস্ত গুরুত্বপূর্ণ ফিচার পরীক্ষা করা হয়েছে।
Istanbul এর সাথে JasmineJS এর ইন্টিগ্রেশন
Istanbul সাধারণত nyc নামক একটি টুলের মাধ্যমে ব্যবহৃত হয়, যা আপনাকে JasmineJS এর টেস্ট রানার এবং কোড কাভারেজ টুল হিসেবে কাজ করতে সাহায্য করে। nyc আপনার কোডের কাভারেজ সংগ্রহ করতে সাহায্য করে এবং তা একটি রিপোর্টের আকারে প্রদান করে।
JasmineJS এবং Istanbul এর ইন্টিগ্রেশন: ধাপ
১. প্রয়োজনীয় প্যাকেজ ইনস্টল করা
JasmineJS এবং Istanbul (nyc) ইন্টিগ্রেট করতে আপনাকে কিছু প্যাকেজ ইনস্টল করতে হবে। নিচে তার জন্য কমান্ড দেওয়া হলো:
npm install --save-dev jasmine nyc
এছাড়াও, আপনি যদি Jasmine এর সাথে Webpack ব্যবহার করেন, তবে babel এর সাথে ইন্টিগ্রেট করা প্রয়োজন হতে পারে। এজন্য আপনাকে babel প্যাকেজগুলো ইনস্টল করতে হতে পারে।
২. Jasmine টেস্ট রানার কনফিগারেশন
JasmineJS এর জন্য jasmine.json কনফিগারেশন ফাইল তৈরি করুন (যদি না থাকে)। উদাহরণস্বরূপ:
{
"spec_dir": "spec",
"spec_files": [
"*/**/*[sS]pec.js"
],
"helpers": [
"helpers/**/*.js"
]
}
৩. nyc কনফিগারেশন
nyc বা Istanbul এর জন্য আপনাকে nyc টুলের কনফিগারেশন সেট করতে হবে। সাধারণত আপনি এটি আপনার package.json ফাইলে কনফিগার করতে পারেন। উদাহরণস্বরূপ:
{
"scripts": {
"test": "nyc jasmine"
},
"nyc": {
"reporter": ["lcov", "text-summary"],
"all": true
}
}
এখানে:
"reporter": এটি কাভারেজ রিপোর্টের ধরন নির্ধারণ করে (এখানেlcovএবংtext-summaryনির্বাচন করা হয়েছে)।"all": এটি নিশ্চিত করে যে সমস্ত ফাইল কাভারেজ রিপোর্টে অন্তর্ভুক্ত হবে, এমনকি যেগুলো টেস্ট করা হয়নি।
৪. টেস্ট চালানো এবং কাভারেজ রিপোর্ট দেখা
একবার আপনি nyc কনফিগারেশন শেষ করলে, আপনার টেস্ট চালানোর জন্য নিচের কমান্ডটি ব্যবহার করুন:
npm test
এই কমান্ড চালানোর পর, nyc আপনার Jasmine টেস্ট রানার চালাবে এবং কোড কাভারেজ রিপোর্ট তৈরি করবে। রিপোর্টের আউটপুট কিছুটা এইরকম হতে পারে:
----------------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------------|---------|----------|---------|---------|-------------------
All files | 85.71 | 77.78 | 90 | 87.5 |
myModule.js | 85.71 | 77.78 | 90 | 87.5 | 12-15, 23-25
----------------|---------|----------|---------|---------|-------------------
এখানে:
- % Stmts: কোডের কত শতাংশ স্টেটমেন্ট পরীক্ষা করা হয়েছে।
- % Branch: কোডের কত শতাংশ ব্রাঞ্চ (if/else) টেস্ট করা হয়েছে।
- % Funcs: কত শতাংশ ফাংশন টেস্ট করা হয়েছে।
- % Lines: কোডের কত শতাংশ লাইন টেস্ট করা হয়েছে।
৫. কোড কাভারেজ রিপোর্ট দেখার
nyc চালানোর পর আপনি লোভনীয় LCOV রিপোর্ট দেখতে পারবেন, যা HTML ফরম্যাটে তৈরি হবে। এটি সাধারণত coverage ফোল্ডারের মধ্যে থাকে। এখানে একটি index.html ফাইল থাকবে, যেটি খুললে আপনি সুন্দরভাবে কাভারেজের গ্রাফিক্যাল রিপ্রেজেন্টেশন দেখতে পারবেন।
JasmineJS এবং Istanbul এর মাধ্যমে কোড কাভারেজের সুবিধা
- পূর্ণ কোড কাভারেজ: Jasmine এবং Istanbul এর মাধ্যমে আপনি পূর্ণ কোড কাভারেজ রিপোর্ট পেতে পারেন, যা আপনার কোডের প্রতিটি অংশের জন্য নিশ্চিত করবে যে সেগুলি টেস্ট করা হয়েছে।
- ব্লাইন্ড স্পট শনাক্তকরণ: কোড কাভারেজ আপনাকে চিহ্নিত করতে সহায়তা করবে যে কোথায় আরও টেস্টিং দরকার এবং কোন অংশে টেস্টিং হয়নি।
- তৈরি রিপোর্ট: কোড কাভারেজ রিপোর্ট সাধারণত HTML এবং text-summary আকারে পাওয়া যায়, যা টিমের অন্যান্য সদস্যদের জন্য খুবই উপকারী।
সারাংশ
JasmineJS এর মাধ্যমে code coverage নিশ্চিত করার জন্য Istanbul (nyc) এর সঙ্গে ইন্টিগ্রেশন করা একটি অত্যন্ত কার্যকর পদ্ধতি। আপনি nyc টুল ব্যবহার করে Jasmine টেস্ট রানার এর সাথে কোড কাভারেজ মাপতে পারেন, এবং এটি আপনাকে আপনার কোডের কোন অংশগুলো টেস্ট করা হয়েছে এবং কোনগুলো বাদ পড়েছে তা নির্ধারণ করতে সহায়ক হয়। JasmineJS এবং Istanbul এর মধ্যে এই ইন্টিগ্রেশনটি আপনার টেস্টিং প্রক্রিয়াকে আরও শক্তিশালী এবং নির্ভরযোগ্য করে তোলে।
Code Coverage হচ্ছে একটি মেট্রিক বা পরিমাপ, যা আপনার কোডের কতটা অংশ টেস্ট করা হয়েছে তা নির্দেশ করে। এটি টেস্টিং প্রসেসের একটি গুরুত্বপূর্ণ দিক, কারণ এটি আপনাকে জানায় যে আপনার টেস্টগুলো কোডের কোন অংশে কার্যকর এবং কোথায় টেস্টিংয়ের ঘাটতি থাকতে পারে।
বিশেষভাবে, Code Coverage আপনাকে কোডের সেই অংশগুলো চিহ্নিত করতে সাহায্য করে, যেগুলো টেস্ট করা হয়নি বা সঠিকভাবে কভার করা হয়নি, যাতে আপনার সফটওয়্যার সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করা যায়।
Code Coverage এর বিভিন্ন ধরন
Code Coverage সাধারণত কয়েকটি দৃষ্টিকোণ থেকে পরিমাপ করা হয়, যার মধ্যে প্রধান কিছু হলো:
- Line Coverage: কতটি কোড লাইনের টেস্ট করা হয়েছে।
- Function Coverage: কতটি ফাংশন টেস্ট করা হয়েছে।
- Branch Coverage: কোডের শাখা (branch) গুলি কতটা টেস্ট করা হয়েছে।
- Statement Coverage: কোডের স্টেটমেন্ট গুলি কতটা টেস্ট করা হয়েছে।
এগুলি একত্রিতভাবে আপনাকে একটি পূর্ণাঙ্গ ছবি দেয়, যে আপনার কোডের কোন অংশ সঠিকভাবে পরীক্ষা হয়েছে এবং কোথায় সুরক্ষার ঘাটতি থাকতে পারে।
Code Coverage কেন গুরুত্বপূর্ণ?
Code Coverage টেস্টিংয়ের মাধ্যমে আপনি নিশ্চিত হতে পারেন যে আপনার কোডের প্রতিটি অংশ সঠিকভাবে কাজ করছে এবং কোনো কোড অংশ অবহেলিত হচ্ছে না। Code Coverage টেস্টিংয়ের কিছু গুরুত্বপূর্ণ সুবিধা নিচে আলোচনা করা হলো:
- বাগ সনাক্তকরণ: Code Coverage বৃদ্ধি পেলে, আপনি কোডের এমন অংশ খুঁজে পাবেন যা পরীক্ষা করা হয়নি এবং যেখানে বাগ থাকতে পারে।
- কোডের গুণমান নিশ্চিতকরণ: টেস্টিংয়ের মাধ্যমে কোডের গুণমান বৃদ্ধি পায়। অধিক coverage নিশ্চিত করে যে কোডের প্রতিটি লজিক্যাল অংশ কার্যকরভাবে কাজ করছে।
- নির্ভরযোগ্য সফটওয়্যার: পূর্ণ coverage নিশ্চিত করতে পারলে সফটওয়্যার আরও নির্ভরযোগ্য হয়ে ওঠে, কারণ যেকোনো নতুন কোড বা ফিচার যখন যুক্ত হয়, তখন টেস্ট কভারেজ তা চেক করতে সাহায্য করে।
- টেস্টে ঘাটতির সনাক্তকরণ: কোডের কোন অংশ টেস্ট করা হয়নি তা সনাক্ত করা সহজ হয়ে যায়। এতে আপনি সহজে সেই অংশগুলোতে টেস্ট লিখে কোডের পূর্ণাঙ্গ পরীক্ষা নিশ্চিত করতে পারেন।
- ডেভেলপমেন্টে সময় সাশ্রয়: কোডের উপর যথাযথ টেস্টিং করলে পরে বাগ ফিক্সিংয়ে কম সময় লাগবে, কারণ কোডের সব অংশ পরীক্ষা করা হয়ে যাবে।
Code Coverage পরিমাপের টুলস
JasmineJS এর সঙ্গে কোড কভারেজ পরিমাপের জন্য বেশ কিছু টুল ব্যবহার করা হয়। এর মধ্যে একটি জনপ্রিয় টুল হলো Istanbul। Istanbul হল একটি কোড কভারেজ টুল, যা আপনার টেস্ট স্যুট রান করার পর কোডের কত অংশ টেস্ট করা হয়েছে তা পরিমাপ করে।
সারাংশ
Code Coverage হলো একটি গুরুত্বপূর্ণ টেস্টিং মেট্রিক যা টেস্ট করা কোডের অংশের পরিমাণ পরিমাপ করে। এটি সফটওয়্যার ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ অংশ, কারণ এটি বাগ সনাক্তকরণ, কোডের গুণমান নিশ্চিতকরণ এবং টেস্টিংয়ে ঘাটতির সনাক্তকরণে সহায়তা করে। JasmineJS এর সাথে Istanbul এর মতো টুল ব্যবহার করে আপনি আপনার কোডের পূর্ণ coverage নিশ্চিত করতে পারেন, যা আপনার সফটওয়্যারকে আরও নির্ভরযোগ্য এবং নিরাপদ করে তোলে।
JasmineJS একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা ব্যবহার করে আপনি আপনার কোডের বিভিন্ন অংশ পরীক্ষা করতে পারেন। তবে, শুধু টেস্ট লেখা না, টেস্টের পূর্ণতা বা code coverage (কোড কভারেজ) যাচাই করাও গুরুত্বপূর্ণ। Code coverage হল সেই পরিমাণ কোড যা আপনার টেস্ট কেসগুলোর মাধ্যমে চালিত হয়েছে এবং যাচাই করা হয়েছে। JasmineJS এর সাথে code coverage tools ইন্টিগ্রেট করলে আপনি জানতে পারবেন যে কোন অংশে টেস্ট যথেষ্ট নয় বা কোন অংশে টেস্ট নেই।
এই টিউটোরিয়ালে আমরা দেখব কীভাবে JasmineJS এর সাথে code coverage tools ইন্টিগ্রেট করা যায়।
Code Coverage Tools কেন গুরুত্বপূর্ণ?
Code coverage tools আপনাকে সাহায্য করে আপনার টেস্ট কভারেজ উন্নত করতে। এই টুলগুলি আপনার টেস্ট স্যুটের মাধ্যমে কতটা কোড পরীক্ষা করা হয়েছে এবং কোন কোডটি অটেস্টেড তা নির্ধারণ করে। Code coverage মেট্রিক্সের মধ্যে প্রধান প্রধান টেস্ট মেট্রিক্স হলো:
- Statement Coverage: কোডের কতগুলো স্টেটমেন্ট টেস্ট করা হয়েছে।
- Branch Coverage: কোডের লজিক্যাল ব্রাঞ্চগুলো কতটুকু টেস্ট করা হয়েছে।
- Function Coverage: কতগুলো ফাংশন টেস্ট করা হয়েছে।
JasmineJS এর সাথে Code Coverage ইন্টিগ্রেশন
JasmineJS এর সাথে code coverage tools ইন্টিগ্রেট করতে সাধারণত Istanbul বা তার আধুনিক সংস্করণ nyc ব্যবহার করা হয়। Istanbul JavaScript এর জন্য একটি শক্তিশালী code coverage টুল, যা আপনাকে কোডের বিভিন্ন অংশের কভারেজ পরিসংখ্যান প্রদান করে।
Step-by-Step: JasmineJS এর সাথে Code Coverage টুল ইন্টিগ্রেট করা
১. প্রাথমিক সেটআপ: JasmineJS ইনস্টল করা
প্রথমে, JasmineJS ইনস্টল করা থাকতে হবে। যদি JasmineJS ইতোমধ্যে ইনস্টল করা না থাকে, তাহলে npm ব্যবহার করে এটি ইনস্টল করুন।
npm install --save-dev jasmine
এবং JasmineJS এর কনফিগারেশন ফাইল তৈরি করুন:
npx jasmine init
২. Istanbul বা NYC ইনস্টল করা
এখন, Istanbul বা nyc টুলটি ইনস্টল করতে হবে। এই টুলটি আপনার টেস্ট রান করার সময় কোড কভারেজ ট্র্যাক করবে।
npm install --save-dev nyc
এটি Istanbul এর আধুনিক সংস্করণ, এবং এটি JasmineJS এর সাথে ভালোভাবে কাজ করে।
৩. Package.json কনফিগার করা
nyc টুলটিকে আপনার package.json ফাইলে কনফিগার করুন। এটি Jasmine এর মাধ্যমে টেস্ট চালানোর সাথে সাথে কোড কভারেজের রিপোর্টও জেনারেট করবে।
package.json ফাইলের মধ্যে নিম্নলিখিত স্ক্রিপ্ট যোগ করুন:
{
"scripts": {
"test": "jasmine",
"coverage": "nyc --reporter=text --reporter=lcov jasmine"
}
}
এখানে:
nyc --reporter=text --reporter=lcov jasmine:nycটুলটি Jasmine এর টেস্ট রান করবে এবং টেস্ট শেষে কভারেজ রিপোর্ট তৈরি করবে।--reporter=textকভারেজের টেক্সট আউটপুট দেখাবে এবং--reporter=lcovLCOV ফরম্যাটে কভারেজ রিপোর্ট তৈরি করবে, যা আপনি একটি HTML ফরম্যাটে দেখতে পারবেন।
৪. Code Coverage রিপোর্ট চালানো
এখন, আপনি যদি আপনার কোডের কভারেজ দেখতে চান, তাহলে নিম্নলিখিত কমান্ড চালান:
npm run coverage
এই কমান্ডটি Jasmine টেস্ট চালাবে এবং Istanbul বা nyc ব্যবহার করে কোড কভারেজ রিপোর্ট তৈরি করবে।
আপনি রিপোর্টটি lcov-report ডিরেক্টরিতে দেখতে পারবেন। HTML ফরম্যাটে দেখতে হলে, ব্রাউজারে lcov-report/index.html ফাইলটি খুলুন।
৫. Code Coverage রিপোর্ট বিশ্লেষণ করা
যখন আপনি কোড কভারেজ রিপোর্ট দেখতে পাবেন, তখন বিভিন্ন মেট্রিক্স যেমন statements, branches, functions, lines ইত্যাদি দেখতে পাবেন। এই রিপোর্টটি আপনাকে বলে দেবে:
- কোন অংশে টেস্ট কম বা একদম নেই
- কোন ব্রাঞ্চ বা শাখায় টেস্ট করা হয়নি
- কত শতাংশ কোড টেস্ট করা হয়েছে
Example: JasmineJS এবং nyc এর সাথে Code Coverage
ধরা যাক, আপনার একটি ফাংশন আছে যা দুটি সংখ্যার যোগফল করে:
function add(a, b) {
return a + b;
}
এখন, আপনি এই ফাংশনের জন্য JasmineJS দিয়ে একটি টেস্ট লিখবেন:
describe("add function", function() {
it("should add two numbers correctly", function() {
expect(add(2, 3)).toBe(5);
});
});
এখন, আপনি যদি code coverage চেক করেন, তাহলে nyc রিপোর্টে দেখতে পাবেন যে ফাংশনটি সঠিকভাবে টেস্ট করা হয়েছে, এবং কোন অপ্রয়োজনীয় কোড অংশ বা কভারেজ নেই।
Code Coverage রিপোর্টের ধরন
- Statements: মোট কতটি স্টেটমেন্ট টেস্ট হয়েছে
- Branches: লজিক্যাল ব্রাঞ্চ টেস্ট হয়েছে কিনা
- Functions: কোডের ফাংশনগুলোর কভারেজ
- Lines: কোড লাইনের কভারেজ
এই রিপোর্টে, যেগুলি কম কভারেজ বা নষ্ট দেখাবে, তা আপনার টেস্ট স্যুটে আরও টেস্ট যুক্ত করার সংকেত হতে পারে।
সারাংশ
JasmineJS এর সাথে code coverage tools যেমন nyc ইন্টিগ্রেট করা একটি গুরুত্বপূর্ণ পদক্ষেপ। এটি আপনাকে আপনার টেস্টের পূর্ণতা পর্যালোচনা করতে সহায়তা করে এবং জানাতে পারে কোন অংশে টেস্টের ঘাটতি রয়েছে। আপনি nyc বা Istanbul ব্যবহার করে JasmineJS এর সাথে সহজেই কভারেজ রিপোর্ট জেনারেট করতে পারেন। এটি আপনার টেস্ট কভারেজের মান নিশ্চিত করতে সাহায্য করবে এবং নিশ্চিত করবে যে আপনার কোড যথাযথভাবে টেস্ট করা হয়েছে।
Istanbul হলো একটি JavaScript কোড কভারেজ টুল যা আপনার কোডের কতটা অংশ টেস্ট করা হয়েছে, তা বিশ্লেষণ করতে সাহায্য করে। JasmineJS এর সাথে Istanbul ব্যবহার করলে আপনি সহজেই আপনার টেস্টের কভারেজ পরিমাপ করতে পারবেন, যা টেস্টিং প্রক্রিয়াকে আরও শক্তিশালী এবং কার্যকরী করে তোলে।
Istanbul সাধারণত nyc নামেও পরিচিত, যা Istanbul এর CLI টুল। এই টুলটি ব্যবহার করে আপনি Jasmine টেস্টের কোড কভারেজ তৈরি করতে পারেন।
Istanbul (nyc) সেটআপ এবং ইনস্টলেশন
প্রথমে আপনাকে nyc এবং Jasmine টুলগুলো ইনস্টল করতে হবে। নিচে পর্যায়ক্রমে সেগুলি কীভাবে ইনস্টল করবেন তা ব্যাখ্যা করা হয়েছে।
1. প্রয়োজনীয় প্যাকেজ ইনস্টল করা
প্রথমে আপনাকে nyc এবং jasmine ইনস্টল করতে হবে। নিচের কমান্ডগুলো ব্যবহার করুন:
npm install --save-dev jasmine nyc
এটি Jasmine এবং nyc উভয়ই আপনার প্রোজেক্টে ডেভেলপমেন্ট ডিপেনডেন্সি হিসেবে ইনস্টল করবে।
2. Jasmine সেটআপ করা
JasmineJS এর সাথে ইনস্টলেশনের জন্য আপনাকে কিছু কনফিগারেশন করতে হবে। যদি আপনি আগে থেকেই Jasmine সেটআপ করে থাকেন, তবে এই স্টেপটি বাদ দিতে পারেন। তবে যদি নতুন করে সেটআপ করতে চান, তাহলে নিচের কমান্ড ব্যবহার করুন:
npx jasmine init
এটি Jasmine এর জন্য একটি বেসিক কনফিগারেশন তৈরি করবে।
3. NYC (Istanbul) কনফিগারেশন
Istanbul এর মাধ্যমে কোড কভারেজ সংগ্রহ করার জন্য nyc টুলটি ব্যবহার করা হয়। এটি আপনার Jasmine টেস্টের কভারেজ রিপোর্ট তৈরি করবে।
আপনি nyc এর জন্য একটি কনফিগারেশন ফাইল তৈরি করতে পারেন অথবা package.json ফাইলেই কনফিগারেশন করতে পারেন।
package.json ফাইলে নিচের কোডটি যোগ করুন:
{
"scripts": {
"test": "nyc jasmine"
},
"nyc": {
"reporter": ["html", "text-summary"],
"include": ["src/**/*.js"],
"exclude": ["node_modules/**", "test/**"]
}
}
এখানে:
nyc jasmine: এটি Jasmine টেস্ট রান করার পর Istanbul (nyc) দ্বারা কভারেজ রিপোর্ট জেনারেট করবে।reporter: দুটি রিপোর্টার নির্বাচন করা হয়েছে:html: HTML ফরম্যাটে কভারেজ রিপোর্ট।text-summary: টার্মিনালে সংক্ষিপ্ত কভারেজ রিপোর্ট।
include: টেস্ট করার জন্য কোন ফাইল বা ডিরেক্টরি ইনক্লুড করবেন তা নির্ধারণ।exclude: কোন ফাইল বা ডিরেক্টরি কভারেজ রিপোর্ট থেকে বাদ দেবেন তা নির্ধারণ।
4. টেস্ট রান করা এবং কভারেজ রিপোর্ট দেখা
এখন আপনি আপনার টেস্ট রান করতে পারেন এবং কভারেজ রিপোর্ট জেনারেট করতে পারেন। টেস্ট রান করার জন্য নীচের কমান্ডটি ব্যবহার করুন:
npm test
এটি nyc jasmine স্ক্রিপ্ট চালাবে এবং Jasmine টেস্ট রান করার পর কভারেজ রিপোর্ট তৈরি করবে।
- HTML রিপোর্ট: রিপোর্টটি
coverage/ফোল্ডারে একটিindex.htmlফাইল হিসেবে সংরক্ষণ হবে। আপনি ব্রাউজারে এটি খুলে কোড কভারেজ বিশ্লেষণ করতে পারবেন। - Text Summary: টার্মিনালে একটি সংক্ষিপ্ত সারাংশ পাবেন, যা কোড কভারেজের পরিমাণ এবং কোন অংশটি টেস্ট করা হয়নি তা দেখাবে।
5. কভারেজ রিপোর্ট বিশ্লেষণ করা
যখন আপনি HTML রিপোর্ট ব্রাউজারে খুলবেন, আপনি নিম্নলিখিত তথ্য দেখতে পাবেন:
- প্রতিটি ফাইলের কভারেজ: প্রতিটি ফাইলের টেস্ট করা অংশের পরিমাণ এবং কোন অংশটি টেস্ট করা হয়নি তা দেখাবে।
- ফাংশন, স্টেটমেন্ট এবং ব্রাঞ্চ কভারেজ: কভারেজ রিপোর্টে
statements,functions, এবংbranchesএর কভারেজ পরিমাণ দেখা যাবে। - যে অংশগুলো টেস্ট করা হয়নি: কোনো কোড সেগমেন্ট টেস্ট না হলে, তা রিপোর্টে স্পষ্টভাবে চিহ্নিত হবে।
6. কোড কভারেজে উন্নতি আনা
কভারেজ রিপোর্ট বিশ্লেষণ করার পর আপনি জানতে পারবেন কোন অংশগুলো টেস্ট হয়নি। এসব অংশে নতুন টেস্ট কেস লিখে কভারেজ বৃদ্ধি করতে পারেন। JasmineJS এর মাধ্যমে নতুন টেস্ট কেস লিখে আপনি আপনার টেস্ট স্যুট আরও শক্তিশালী করতে পারবেন।
সারাংশ
JasmineJS এবং Istanbul (nyc) একত্রে ব্যবহার করলে আপনি আপনার JavaScript কোডের কার্যকারিতা এবং টেস্ট কভারেজ সহজে পরিমাপ করতে পারবেন। Istanbul কোড কভারেজ রিপোর্ট তৈরির মাধ্যমে টেস্টের শক্তি এবং কভারেজ বিশ্লেষণ করা সম্ভব হয়। এটি আপনার কোডের কোথায় টেস্ট কমপ্লিট এবং কোথায় টেস্ট বাড়ানো প্রয়োজন তা শনাক্ত করতে সহায়ক। JasmineJS এর সাথে nyc টুল ব্যবহার করলে আপনার টেস্টিং প্রক্রিয়া আরও উন্নত এবং দক্ষ হয়ে ওঠে।
জ্যাসমিনজেএস (JasmineJS) টেস্টিং ফ্রেমওয়ার্কটি সাধারণত ইউনিট টেস্টের জন্য ব্যবহৃত হয়, তবে টেস্ট কভারেজ (Test Coverage) ট্র্যাক করতে এটি সরাসরি কোনো বিল্ট-ইন টুল প্রদান করে না। তবে, আপনি Karma এবং Istanbul বা coverage-istanbul-reporter ব্যবহার করে JasmineJS টেস্ট কভারেজ ট্র্যাক করতে পারেন এবং কভারেজ রিপোর্ট বিশ্লেষণ করতে পারেন। এই টুলগুলির সাহায্যে আপনি আপনার কোডের কভারেজ পরিমাণ দেখতে পারবেন এবং নির্দিষ্ট থ্রেশহোল্ড সেট করতে পারবেন, যা টেস্ট সফলভাবে পাস করতে হলে সে পরিমাণ কভারেজ থাকতে হবে।
Coverage Threshold সেট করা
Karma এর মাধ্যমে JasmineJS টেস্টের কভারেজ যাচাই করতে হলে প্রথমে আপনাকে কিছু নির্দিষ্ট কনফিগারেশন সেটআপ করতে হবে। এটি নিশ্চিত করবে যে আপনার টেস্টগুলো একটি নির্দিষ্ট কভারেজ থ্রেশহোল্ড মিট করে, অন্যথায় টেস্ট ফেইল করবে।
1. Karma, Jasmine এবং Coverage প্লাগিন ইনস্টল করা
প্রথমে Karma, Jasmine এবং কভারেজ সম্পর্কিত কিছু প্লাগিন ইনস্টল করতে হবে।
npm install karma karma-jasmine karma-chrome-launcher karma-coverage --save-dev
2. Karma কনফিগারেশন ফাইল সেটআপ করা
Karma কনফিগারেশন ফাইলে কিছু টুলস এবং কভারেজ রিপোর্টার সেটআপ করতে হবে।
// karma.conf.js
module.exports = function(config) {
config.set({
frameworks: ['jasmine'],
browsers: ['ChromeHeadless'], // হেডলেস মোডে Chrome ব্যবহার
reporters: ['progress', 'coverage'], // কভারেজ রিপোর্টের জন্য 'coverage' ব্যবহার
files: [
'src/**/*.js', // আপনার সোর্স ফাইল
'spec/**/*.js' // আপনার টেস্ট ফাইল
],
preprocessors: {
'src/**/*.js': ['coverage'] // কভারেজ প্রিসেসর
},
coverageReporter: {
type: 'html', // কভারেজ রিপোর্ট HTML আউটপুট হিসেবে হবে
dir: 'coverage/' // রিপোর্ট যেখানে সেভ হবে
},
coverageThreshold: { // থ্রেশহোল্ড সেট করা
global: {
statements: 80, // 80% স্টেটমেন্ট কভারেজ
branches: 75, // 75% ব্রাঞ্চ কভারেজ
functions: 85, // 85% ফাংশন কভারেজ
lines: 80 // 80% লাইনের কভারেজ
}
}
});
};
এখানে:
coverageReporter: কভারেজ রিপোর্ট কোথায় এবং কিভাবে তৈরি হবে তা নির্ধারণ করা হয়।coverageThreshold: আপনি যে পরিমাণ কভারেজ আশা করছেন, তার জন্য থ্রেশহোল্ড সেট করা হয়। উপরের উদাহরণে, মোট স্টেটমেন্ট, ব্রাঞ্চ, ফাংশন এবং লাইনে কভারেজ যথাক্রমে 80%, 75%, 85%, এবং 80% রাখা হয়েছে।
3. টেস্ট রান করা
এখন আপনি karma start কমান্ড ব্যবহার করে টেস্ট রান করতে পারবেন। যদি কভারেজ থ্রেশহোল্ড পূর্ণ না হয়, তবে Karma টেস্ট ফলাফল হিসাবে একটি ত্রুটি (error) দেখাবে।
karma start karma.conf.js
এখানে:
karma.conf.js: আপনার কনফিগারেশন ফাইল।- যদি কভারেজ থ্রেশহোল্ড না পূর্ণ হয়, Karma টেস্ট ব্যর্থ হবে এবং একটি ত্রুটি ফিরিয়ে দেবে।
কভারেজ রিপোর্ট বিশ্লেষণ
JasmineJS এবং Karma ব্যবহার করে কভারেজ রিপোর্ট তৈরি করার পর, সেই রিপোর্ট বিশ্লেষণ করা গুরুত্বপূর্ণ। কভারেজ রিপোর্ট আপনাকে কোডের কতটা অংশ পরীক্ষিত হয়েছে এবং কোন কোন অংশে টেস্ট কভারেজ নেই, তা দেখাবে।
কভারেজ রিপোর্ট ফাইল
কভারেজ রিপোর্ট সাধারণত coverage/ ডিরেক্টরিতে সেভ হয়, এবং এটি HTML ফরম্যাটে তৈরি হয়। আপনি আপনার ব্রাউজারে সেই রিপোর্টটি ওপেন করতে পারেন।
- HTML কভারেজ রিপোর্ট: এটি একটি ইন্টারেক্টিভ রিপোর্ট তৈরি করে যা আপনি ব্রাউজারে দেখতে পারবেন।
- রিপোর্টটি সাধারণত
coverage/index.htmlফাইলে পাওয়া যায়। - আপনি যদি এই ফাইলটি ব্রাউজারে ওপেন করেন, তাহলে আপনি দেখতে পাবেন আপনার কোডের বিভিন্ন অংশ কতটা কভারেজ পেয়েছে।
- রিপোর্টটি সাধারণত
রিপোর্ট বিশ্লেষণ
রিপোর্টটি তিনটি প্রধান অংশে বিভক্ত থাকে:
- Statements: টেস্ট করা কোডের মোট স্টেটমেন্টের শতকরা অংশ।
- Branches: কোডের শাখাগুলোর কভারেজ (যেমন if বা switch statements)।
- Functions: ফাংশন বা মেথডের কভারেজ।
- Lines: কোডের প্রতিটি লাইনের কভারেজ।
প্রতিটি অংশে কতটা কভারেজ হয়েছে, তার একটি শতকরা হিসাব রিপোর্টে দেখানো হয়। যদি কোনো অংশে কভারেজ কম থাকে, আপনি সেই অংশের জন্য আরও টেস্ট কেস যোগ করতে পারেন।
কভারেজ রিপোর্টে গুরুত্বপূর্ণ তথ্য
- Uncovered Lines: যেসব কোডের লাইনে টেস্ট হয়নি, সেগুলোর উপর ক্লিক করলে আপনি দেখতে পাবেন সেই লাইনের জন্য কোনো টেস্ট কেস লেখা হয়নি।
- Functions Not Covered: কোনো ফাংশনের মধ্যে যদি টেস্ট না থাকে, তবে সেটি রিপোর্টে দেখা যাবে। এটা আপনাকে আপনার কোডের অপরীক্ষিত অংশগুলি চিহ্নিত করতে সহায়তা করবে।
- Branches Not Covered: কোডের শাখাগুলোর মধ্যে কোন অংশ টেস্ট করা হয়নি, তা সহজেই চিহ্নিত করা যায়।
সারাংশ
- Coverage Threshold সেট করার মাধ্যমে আপনি নিশ্চিত করতে পারেন যে আপনার কোডের নির্দিষ্ট অংশগুলোর জন্য পর্যাপ্ত টেস্ট কভারেজ রয়েছে। এটি টেস্ট সিকিউরিটি বৃদ্ধি করে এবং আপনার কোডের নির্ভরযোগ্যতা নিশ্চিত করতে সহায়তা করে।
- Karma এবং Istanbul (অথবা coverage-istanbul-reporter) ব্যবহার করে JasmineJS টেস্টের কভারেজ রিপোর্ট তৈরি করা সম্ভব এবং HTML রিপোর্ট মাধ্যমে কভারেজ বিশ্লেষণ করা যায়।
- Coverage Threshold সেট করে আপনি একটি মিনিমাম কভারেজ স্তর নিশ্চিত করতে পারেন, যা আপনার টেস্ট প্রক্রিয়াকে আরও শক্তিশালী এবং নির্ভরযোগ্য করে তোলে।
Karma কনফিগারেশন এবং রিপোর্ট বিশ্লেষণ আপনাকে কোডের পূর্ণাঙ্গ টেস্ট কভারেজ এবং সঠিক টেস্ট কেস তৈরি করতে সহায়তা করবে, যাতে আপনার অ্যাপ্লিকেশন বা ওয়েবসাইট সঠিকভাবে কাজ করে।
Read more